
/*
 * (a)  (C) 1990 by Adobe Systems Incorporated. All rights reserved.
 *
 * (b)  If this Sample Code is distributed as part of the Display PostScript
 *	System Software Development Kit from Adobe Systems Incorporated,
 *	then this copy is designated as Development Software and its use is
 *	subject to the terms of the License Agreement attached to such Kit.
 *
 * (c)  If this Sample Code is distributed independently, then the following
 *	terms apply:
 *
 * (d)  This file may be freely copied and redistributed as long as:
 *	1) Parts (a), (d), (e) and (f) continue to be included in the file,
 *	2) If the file has been modified in any way, a notice of such
 *      modification is conspicuously indicated.
 *
 * (e)  PostScript, Display PostScript, and Adobe are registered trademarks of
 *	Adobe Systems Incorporated.
 * 
 * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
 *	CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
 *	AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
 *	ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
 *	OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
 *	WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
 *	WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
 *	DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
 *	FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
 *	OF THIRD PARTY RIGHTS.
 */

/*
 *	ImportPanel.m
 *
 *	Necessary because of the difficulty of obtaining a copy
 *	of the OpenPanel. This subclass of panel uses the OpenPanel
 *	panel and switches the panel from an OpenPanel to an ImportPanel.
 *	The panel is switched back when needed. Not recommended but
 *	seemingly the only way.
 *
 */

#import "ImportPanel.h"

#import <appkit/Button.h>
#import <appkit/Matrix.h>
#import <appkit/TextField.h>
#import <appkit/View.h>
#import <appkit/nextstd.h>

#import <objc/hashtable.h>
#import <objc/List.h>
#import <objc/Object.h>
#import <strings.h>

@implementation ImportPanel

/*
*	Assign the accessory id to the ImportPanel instance variable.
*	Find the matrix of buttons in the accessory view and the open
*	title text. These ids will be used at later times.
*/
- setImportAccessory:anObject
{
    	int		i, j;

	id		subviewlist, subview;

	/* Search for the button matrix in the accessory view. */
	accessoryId = anObject;
	subviewlist = [[[accessoryId  subviews]  objectAt:0]  subviews];
	j = [subviewlist  count];
	for (i = 0; i < j; i++)
	{
		subview = [subviewlist  objectAt:i];
		if ([subview  isKindOf:[Matrix  class]])
		{
			buttonsId = subview;
			if (switchId)
				break;
		}
		else if ([subview  isKindOf:[Button  class]])
		{
			switchId = subview;
			if (buttonsId)
				break;
		}
	}

	/*
	*  Search for the title textfield in the panel. (Not a recommended
	*  approach but one of the only ways to get at the title.)
	*/
	subviewlist = [contentView  subviews];
	j = [subviewlist  count];
	for (i = 0; i < j; i++)
	{
		subview = [subviewlist  objectAt:i];
		if ([subview isKindOf:[TextField  class]])
		{
			if (strcmp("Open", [subview  stringValue]) == 0)
			{
				titleId = subview;
				break;
			}
		}
	}

	return self;
}

- setOpen
{
	if (strcmp("Open", [titleId  stringValue]) != 0)
	{
		[titleId  setStringValue:"Open"];
		[titleId  display];

		[self  setAccessoryView:NULL];
		if (idirectory)
			NX_FREE(idirectory);
		idirectory = NXCopyStringBuffer(directory);
		[self  allowMultipleFiles:YES];
	}

	return self;
}

- setImport
{
	if (strcmp("Import", [titleId  stringValue]) != 0)
	{
		[titleId  setStringValue:"Import"];
		[titleId  display];

		[self  setAccessoryView:accessoryId];
		if (idirectory)
			[self  setDirectory:idirectory];
		[self  allowMultipleFiles:NO];
	}

	return self;
}

- setFormat:(int) aFormat
{
	[buttonsId  selectCellWithTag:aFormat];

	return self;
}

- (int) format
{
	return  [buttonsId  selectedTag];
}

- (BOOL) dragToSize
{
	return  [switchId  state];
}

@end
